home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / redakcyjne / programy / Tlen 6.0.1.12 pl / tleninst60112.exe / sdk / TlenSources / plugin / plugin_protocol_defs.h < prev    next >
C/C++ Source or Header  |  2006-08-30  |  13KB  |  343 lines

  1. #ifndef plugin_protocol_defsH
  2. #define plugin_protocol_defsH
  3.  
  4. #include <windows.h>
  5.  
  6. #include "plugin_contactlist_defs.h"
  7.  
  8. typedef struct {
  9.  
  10.         int structSize;        //wielko£µ strutkury w bajtach
  11.  
  12.         char *ID;               //ID protoko│u
  13.  
  14.         char *Name;             //Nazwa - pokazywana np przy dodawaniu nowego kontaktu
  15.         char *Extension;        //rozszerzenie, ktore bedzie dodawane do identyfikatora, aby poprawnie zidentyfikowac protokol
  16.                                 //np "tlen.pl" dla tlenu, "gg" dla gg (w wiadomosci wpiszemy do: marekk@tlen.pl, 234343@gg, 3252353@icq)
  17.         char *Description;      //Opis protoko│u
  18.  
  19.         int CapsFlag1;          //Flagi opisujace funkcje i zdarzenia udostepnianie przez dany protok≤│
  20.         int CapsFlag2;
  21.         int CapsFlag3;
  22.         int CapsFlag4;
  23.  
  24.  
  25. } ProtocolDef;                 //Definicja protoko│u
  26.  
  27. typedef struct {
  28.  
  29.  int structSize;        //wielko£µ strutkury w bajtach
  30.  
  31.  char *ProtocolID;              //ID protoko│u pod kt≤ry siΩ podczepiamy
  32.  
  33.  TLENFUNCTION CallBackFunc;     //funkcja otrzymuj╣ca notyfikacje
  34.  char *HookFuncName;            //j.w.
  35.  
  36.  HINSTANCE moduleHandle;        //uchwyt modu│u pluginu
  37.  
  38. } ProtocolHookDef;              //Definicja hooka protoko│u
  39.  
  40. typedef struct {
  41.  
  42.         int structSize;         //wielko£µ strutkury w bajtach
  43.  
  44.         char *ProtocolID;       //ID protoko│u
  45.         char *FunctionName;     //Nazwa funkcji protoko│u
  46.  
  47.         WPARAM wParam;          //Parametry wywo│ania
  48.         LPARAM lParam;
  49.  
  50. } ProtocolFunctionDef;          //Definicja funkcji protoko│u
  51.  
  52. //Tworzy nowy protok≤│
  53. #define TLEN_PROTOCOL_ADDNEWPROTOCOL           "Tlen/AddNewProtocol"
  54. //WPARAM: ProtocolDef *
  55.  
  56. //Kasuje protok≤│
  57. #define TLEN_PROTOCOL_REMOVEPROTOCOL           "Tlen/RemoveProtocol"
  58. //WPARAM: char *ProtocolID
  59.  
  60.  
  61. // Zwraca listΩ protoko│≤w
  62. // listy te sa alokowane dynamicznie, wiec nalezy potem usunac kazdy element z listy
  63. // funkcja sl_delete
  64. #define TLEN_PROTOCOL_GETPROTOCOLLIST          "Tlen/GetProtocolList"
  65. //WPARAM: StringListDef *IDs
  66. //LPARAM: StringListDef *Names
  67.  
  68. //Podczepia siΩ pod zdarzenia protoko│u
  69. #define TLEN_PROTOCOL_HOOK_EVENT               "Tlen/ProtocolHookEvent"   //jako wParam TransportHookDef *
  70. //Kasuje hook'a
  71. #define TLEN_PROTOCOL_UNHOOK_EVENT             "Tlen/ProtocolUnhookEvent" //jako wParam char *ProtocolID, lParam HANDLE hookID;
  72. //Powiadamia podczepione hooki o zdarzeniu
  73. #define TLEN_PROTOCOL_NOTIFY_HOOKS             "Tlen/ProtocolNotifyHooks" //jako wParam ProtocolEventDef *, lParam - odpowiednia struktura
  74. //Wywo│uje funkcje protoko│u
  75. #define TLEN_PROTOCOL_CALL_FUNCTION            "Tlen/ProtocolCallFunction"
  76.  
  77. //do hookowania siΩ pod zdarzenia ze wszystkich protokolow
  78. #define TLEN_ALL_PROTOCOL_NOTIFICATION_HOOK       "Tlen/AllProtocolNotificationHook"
  79.  
  80.  
  81. #define CallTlenProtoFunction(hinst, a, b, c, d, ret) {ProtocolFunctionDef fn;InitializeStruct(fn);fn.ProtocolID=a;fn.FunctionName=b;fn.wParam=(WPARAM)c;fn.lParam=(LPARAM)d;ret=tlen_functions->CallTlenFunction(hInst,TLEN_PROTOCOL_CALL_FUNCTION,(WPARAM)&fn,NULL);};
  82.  
  83. #define PROTOCOL_ID_TLEN               "TLEN"
  84. #define PROTOCOL_ID_GG                 "GG"
  85. #define PROTOCOL_ID_SMS                "SMS"
  86. #define PROTOCOL_ID_GENERAL            "GENERAL"
  87. //rozmowa z anonimowymi z czat≤w
  88. #define PROTOCOL_ID_CHATANONYMOUS      "ANON"
  89.  
  90. //bardziej jako ownerIDs na liscie kontaktow
  91. #define PROTOCOL_ID_GROUP              "GRP"
  92. #define PROTOCOL_ID_CHATROOM           "ROOM"
  93.  
  94. /*
  95. //Flagi opisujace mozliwosci protokolu, kt≤re wkr≤tce siΩ pojawi╣...
  96. #define PROTOCOL_CAPS1_SENDRAWDATA              0x00000001
  97. #define PROTOCOL_CAPS1_FEEDRAWDATA              0x00000002
  98. #define PROTOCOL_CAPS1_SENDMESSAGENORMAL        0x00000004
  99. #define PROTOCOL_CAPS1_SENDMESSAGECHAT          0x00000008
  100. #define PROTOCOL_CAPS1_CHANGEUSERSTATE          0x00000010
  101. #define PROTOCOL_CAPS1_GETUSERSTATE             0x00000020
  102.  
  103. #define PROTOCOL_CAPS2_STATE_TEXT               0x10000000 //czy mozna ustawiac stany opisowe
  104. #define PROTOCOL_CAPS2_STATE_DATE               0x20000000 //czy mozna ustawiac date powrotu
  105. #define PROTOCOL_CAPS2_STATE_OFFLINE            0x00000001
  106. #define PROTOCOL_CAPS2_STATE_ONLINE             0x00000002
  107. #define PROTOCOL_CAPS2_STATE_CHAT               0x00000004
  108. #define PROTOCOL_CAPS2_STATE_DND                0x00000008
  109. #define PROTOCOL_CAPS2_STATE_AWAY               0x00000010
  110. #define PROTOCOL_CAPS2_STATE_XA                 0x00000020
  111. #define PROTOCOL_CAPS2_STATE_INVISIBLE          0x00000040
  112. */
  113.  
  114. //Struktury:
  115. typedef struct {
  116.  
  117.         int structSize;        //wielko£µ strutkury w bajtach
  118.  
  119.         char *ProtocolID;       //ID protoko│u
  120.         int EventID;            //kod zdarzenia
  121.  
  122. } ProtocolEventDef;             //Definicja zdarzenia protoko│u
  123.  
  124. typedef struct {
  125.  
  126.         int structSize;                   //wielko£µ strutkury w bajtach
  127.  
  128.         ContactDef Contact;                //id contact i protocol
  129.         ContactsListDef MultipleContacts;  //jesli wiadomosc wysylana jest do wielu osob, to userid bedzie null, a tu bedzie lista.
  130.  
  131.         int Flags;              //flagi - normal, chat, konferencyjna, offline, etc.
  132.         unsigned int TimeStamp; //czas wyslania - standardowy timestamp
  133.         char *MessageID;        //ID wiadomosci
  134.  
  135.         char *MessageText;      //Tekst wiadomosci
  136.  
  137.         //dla konferencji
  138.         char *RoomName;
  139.  
  140.         //dla wiadomosci wyslanych z WWW na tlen
  141.         char *UserName;
  142.         char *UserEmail;
  143.         char *WWWGate;
  144.  
  145.         //"uchwyt" wiadomosci - do szybkiego rozroznienia wiadomosci w funkcjach callback
  146.         int MessageHandle;
  147.  
  148.         //Ekstra dane
  149.         void *OwnerData;
  150.  
  151. } ProtocolMessageDef;
  152.  
  153. #define PROTOCOL_MESSAGE_FLAGS_OFFLINE      0x00000001
  154. #define PROTOCOL_MESSAGE_FLAGS_NORMAL       0x00000002
  155. #define PROTOCOL_MESSAGE_FLAGS_CHAT         0x00000004
  156. #define PROTOCOL_MESSAGE_FLAGS_WWW          0x00000008
  157. #define PROTOCOL_MESSAGE_FLAGS_CONFERENCE   0x00000010
  158.  
  159. #define PROTOCOL_MESSAGE_FLAGS_INCOMING                 0x00010000
  160. #define PROTOCOL_MESSAGE_FLAGS_OUTGOING                 0x00020000
  161. #define PROTOCOL_MESSAGE_FLAGS_MULTIPLECONTACTS         0x00100000
  162.  
  163. typedef struct {
  164.  
  165.         int structSize;        //wielko£µ strutkury w bajtach
  166.  
  167.         unsigned int DataLength;
  168.         char *Data;
  169.  
  170.         //Ekstra dane
  171.         void *OwnerData;
  172.  
  173.         int Flags;
  174.  
  175. } ProtocolRawDataDef;
  176.  
  177. typedef struct {
  178.  
  179.         int structSize;        //wielko£µ strutkury w bajtach
  180.  
  181.         ContactDef Contact;     //id contact i protocol
  182.  
  183.         int Flags;              //flagi  - do wykorzystania w przyszlosci
  184.         char *Reason;
  185.  
  186.         int TimeStamp;
  187.  
  188.         //Ekstra dane
  189.         void *OwnerData;
  190.  
  191. } ProtocolAuthRequestDef;
  192.  
  193.  
  194. typedef struct {
  195.  
  196.         int structSize;        //wielko£µ strutkury w bajtach
  197.  
  198.         ContactDef Contact;     //id contact i protocol
  199.  
  200.         int CurrentState;     //stan usera
  201.         int PreviousState;    //poprzedni stan usera
  202.         char *CurrentDescription;    //opis stanu
  203.         char *PreviousDescription;    //opis poprzedniego stanu
  204.  
  205.         int Flags;              //flagi
  206.         unsigned int TimeStamp; //czas   - do wykorzystania w przyszlosci
  207.  
  208.         unsigned int CurrentComeBackTimeStamp; //czas powrotu - na razie u┐ywane dla GG
  209.         unsigned int PreviousComeBackTimeStamp; //czas powrotu - na razie u┐ywane dla GG
  210.  
  211.         //Ekstra dane
  212.         void *OwnerData;
  213.  
  214. } ProtocolPresenceDef;
  215.  
  216. #define PROTOCOL_PRESENCE_STATE_OFFLINE            1
  217. #define PROTOCOL_PRESENCE_STATE_ONLINE             2
  218. #define PROTOCOL_PRESENCE_STATE_CHAT               3
  219. #define PROTOCOL_PRESENCE_STATE_DND                4
  220. #define PROTOCOL_PRESENCE_STATE_AWAY               5
  221. #define PROTOCOL_PRESENCE_STATE_XA                 6
  222. #define PROTOCOL_PRESENCE_STATE_INVISIBLE          7
  223.  
  224. #define PROTOCOL_PRESENCE_FLAG_ONLYFRIENDS         0x00010000 //dla funcji ustawiajacej i pobierajacej stan uzytkownika
  225. #define PROTOCOL_PRESENCE_FLAG_AUTOLOGIN           0x00000001 //zmieniony automatycznie po zalogowaniu
  226. #define PROTOCOL_PRESENCE_FLAG_AUTOAWAYENTER       0x00000002
  227. #define PROTOCOL_PRESENCE_FLAG_AUTOAWAYEXITKEY     0x00000004
  228. #define PROTOCOL_PRESENCE_FLAG_AUTOAWAYEXITMOUSE   0x00000008
  229. #define PROTOCOL_PRESENCE_FLAG_CUSTOMTEXT          0x00000010
  230. #define PROTOCOL_PRESENCE_FLAG_PLUGINCHANGED       0x00000020
  231. #define PROTOCOL_PRESENCE_FLAG_MENUCLICKED         0x00000040
  232.  
  233.  
  234. //Definicje funkcji dla protoko│≤w - Protocol Function PF
  235.  
  236. #define PF_SENDMESSAGE          "PFSendMessage"
  237. //WPARAM: ProtocolMessageDef *
  238.  
  239. #define PF_GETUSERSTATE         "PFGetUserState"
  240. #define PF_CHANGEUSERSTATE      "PFChangeUserState"
  241. //WPARAM: ProtocolPresenceDef *
  242.  
  243. #define PF_SENDRAWDATA                  "PFSendRawData"
  244. //WPARAM: ProtocolRawDataDef *
  245. //RETURN:
  246. #define PF_SENDRAWDATA_RV_OK               0
  247. #define PF_SENDRAWDATA_RV_NOTCONNECTED     1
  248.  
  249. #define PF_FEEDRAWDATA                  "PFFeedRawData"
  250. //WPARAM: ProtocolRawDataDef *
  251. //RETURN:
  252. #define PF_FEEDRAWDATA_RV_OK               0
  253. #define PF_FEEDRAWDATA_RV_NOTCONNECTED     1
  254.  
  255. //-----------------------------------------------------------------------
  256. //Zdarzenia protokolow
  257. //-----------------------------------------------------------------------
  258. //Jako WPARAM: ProtocolEventDef *
  259.  
  260. #define PROTOCOL_EVENT_BEFORERECVRAWDATA                0x0004 //Tu mo┐na zablokowaµ dalsze przetwarzanie pakietu
  261. #define PROTOCOL_EVENT_AFTERRECVRAWDATA                 0x000A
  262. #define PROTOCOL_EVENT_AFTERPROCESSEDRECVRAWDATA        0x000C
  263. #define PROTOCOL_EVENT_AFTERRECVMESSAGE                 0x000E
  264. #define PROTOCOL_EVENT_BEFORESENDRAWDATA                0x0007 //Tu mo┐na zablokowaµ wys│anie pakietu
  265. #define PROTOCOL_EVENT_AFTERSENDRAWDATA                 0x000B
  266. //LPARAM: ProtocolRawDataDef *
  267.  
  268. #define PROTOCOL_EVENT_LOGGEDIN                         0x0008
  269. #define PROTOCOL_EVENT_LOGGEDOUT                        0x0009
  270. //LPARAM: ContactDef *
  271.  
  272. #define PROTOCOL_EVENT_RECVMESSAGE                      0x0001
  273. #define PROTOCOL_EVENT_BEFORESENDMESSAGE                0x0005
  274. //LPARAM: ProtocolMessageDef *
  275.  
  276. #define PROTOCOL_EVENT_RECVPRESENCE                     0x0002
  277. #define PROTOCOL_EVENT_BEFORESTATUSCHANGE               0x0006
  278. //LPARAM: ProtocolPresenceDef *
  279.  
  280. #define PROTOCOL_EVENT_AUTHREQUEST                      0x000D
  281. //LPARAM: ProtocolAuthRequestDef *
  282.  
  283. #define PROTOCOL_EVENT_RECVROSTER                       0x0003
  284. //LPARAM: NULL
  285.  
  286. #define PROTOCOL_EVENT_CONTACTDELETED                   0x0010
  287. //LPARAM ContactDef *
  288.  
  289. #define PROTOCOL_EVENT_CONTACTCHANGED                   0x0020
  290.  
  291. //LPARAM:
  292.  
  293. typedef struct {
  294.  
  295.  int structSize;        //wielko£µ strutkury w bajtach
  296.  
  297.  ContactDef old_ct;
  298.  ContactDef new_ct;
  299.  
  300. } ProtocolEventContactChanged;
  301.  
  302. //-----------------------------------------------------------------------
  303. //Funkcje istniej╣ce ale na razie nieudokumentowane ;-)
  304. //-----------------------------------------------------------------------
  305. #define PF_SENDNORMALMESSAGE            "PFSendNormalMessage"
  306. #define PF_BEGINCHAT                    "PFBeginChat"
  307. #define PF_BEGINCONFERENCE              "PFBeginConference"
  308. #define PF_BEGINVOICECHAT               "PFBeginVoiceChat"
  309. #define PF_BEGINVIDEOCHAT               "PFBeginVideoChat"
  310. #define PF_BEGINVOICECHAT_OLD           "PFBeginVoiceChatOld"
  311. #define PF_SENDFILES                    "PFSendFiles"
  312. #define PF_SENDFILES_OLD                "PFSendFilesOld"
  313. #define PF_DELETECONTACTS               "PFDeleteContacts"
  314. #define PF_CHANGECONTACTSGROUP          "PFChangeContactsGroup"
  315. #define PF_SHOWPROPERTIES               "PFShowProperties"
  316. #define PF_SHOWADDCONTACT               "PFShowAddContact"
  317. #define PF_SHOWVCARD                    "PFShowVCard"
  318. #define PF_SHOWARCHIVE                  "PFShowArchive"
  319. #define PF_BLOCKCONTACTS                "PFBlockContacts"
  320. #define PF_UNBLOCKCONTACTS              "PFUnblockContacts"
  321.  
  322. //Wywolywane przez okienko chata bo kliknieciu wyslij/nacisnieciu enter
  323. #define PF_SENDCHATWINDOWMESSAGE        "PFSendChatWindowMessage"
  324. //LPARAM: TlenChatWindowInfoDef *
  325. //WPARAM: TlenChatWindowMessageDef *
  326.  
  327. #define PF_SENDCHATWINDOWMESSAGE_RV_NOTCONNECTED        -1;
  328. #define PF_SENDCHATWINDOWMESSAGE_RV_MESSAGEEMPTY        -2;
  329. #define PF_SENDCHATWINDOWMESSAGE_RV_ARGUMENTERROR       -3;
  330.  
  331. //Wywo│ywane przez okienko chata, gdy u┐ytkownik pisze wiadomosc, lub przestal pisac
  332. #define PF_SENDTYPINGNOTIFICATION       "PFSendTypingNotification"
  333. //WPARAM: contactdef *, LPARAM:
  334. #define PF_SENDTYPINGNOTIFICATION_TYPINGSTARTED       1
  335. #define PF_SENDTYPINGNOTIFICATION_TYPINGSTOPPED       2
  336.  
  337. //WYwolywanie przez okienko chata, gdy uzytkownik wcisnie guziczek dzwonka w oknie rozmowy
  338. #define PF_SENDUSERALERT                    "PFSendUserAlert"
  339. //WPARAM: contactdef *, LPARAM:
  340. #define PF_SENDUSERALERT_CHAT                      0
  341.  
  342. #endif
  343.